﻿using BrowserGameFramework.Messaging;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using BrowserGameFramework.Messaging.Interfaces;
using System.Collections.Generic;
using BrowserGameFramework.Common.XmlHelper;
using System;
using System.Xml.Serialization;
using System.IO;
using System.Text;

namespace BrowserGameFrameworkTest
{


    /// <summary>
    ///Dies ist eine Testklasse für "MessageHandlerTest" und soll
    ///alle MessageHandlerTest Komponententests enthalten.
    ///</summary>
    [TestClass()]
    public class MessageHandlerTest
    {
        private TestContext testContextInstance;

        /// <summary>
        ///Ruft den Testkontext auf, der Informationen
        ///über und Funktionalität für den aktuellen Testlauf bietet, oder legt diesen fest.
        ///</summary>
        public TestContext TestContext
        {
            get
            {
                return testContextInstance;
            }
            set
            {
                testContextInstance = value;
            }
        }

        #region Zusätzliche Testattribute
        // 
        //Sie können beim Verfassen Ihrer Tests die folgenden zusätzlichen Attribute verwenden:
        //
        //Mit ClassInitialize führen Sie Code aus, bevor Sie den ersten Test in der Klasse ausführen.
        //[ClassInitialize()]
        //public static void MyClassInitialize(TestContext testContext)
        //{
        //}
        //
        //Mit ClassCleanup führen Sie Code aus, nachdem alle Tests in einer Klasse ausgeführt wurden.
        //[ClassCleanup()]
        //public static void MyClassCleanup()
        //{
        //}
        //
        //Mit TestInitialize können Sie vor jedem einzelnen Test Code ausführen.
        //[TestInitialize()]
        //public void MyTestInitialize()
        //{
        //}
        //
        //Mit TestCleanup können Sie nach jedem einzelnen Test Code ausführen.
        //[TestCleanup()]
        //public void MyTestCleanup()
        //{
        //}
        //
        #endregion


        /// <summary>
        ///Ein Test für "GetInboxMessagesForUser"
        ///</summary>
        [TestMethod()]
        public void GetInboxMessagesForUserTest()
        {
            MessageHandler target = new MessageHandler();
            int userId = 1;

            MessageHeaderCollection collection = target.GetInboxMessagesForUser(userId);
            Assert.IsTrue(collection.Count > 0);

        }

        /// <summary>
        /// Tests the GetOutboxMessage method
        /// </summary>
        [TestMethod()]
        public void GetOutboxMessagesSendByUserTest()
        {
            MessageHandler target = new MessageHandler();
            int userId = 1;

            MessageHeaderCollection collection = target.GetOutBoxMessagesForUser(userId);
            Assert.IsTrue(collection.Count > 0);

        }

        [TestMethod()]
        public void GetMessageTest()
        {
            MessageHandler handler = new MessageHandler();
            Message msg = handler.GetMessage(1);

            Assert.IsNotNull(msg);
        }

        [TestMethod()]
        public void SetMessageAsReadTest()
        {
            MessageHandler handler = new MessageHandler();
            handler.SetMessageAsRead(1);
        }

        [TestMethod()]
        public void SendMessageTest()
        {
            MessageHandler handler = new MessageHandler();
            Message msg = new Message();
            msg.Autor = 1;
            msg.HeaderText = "Hallo Test";
            msg.InboxType = 1;
            msg.Priority = 1;
            msg.Recipient = 1;
            msg.Text = "Hallo Testtest";

            handler.SendMessage(msg);
        }

    }
}
